The usage of medical imaging devices to diagnose and plan treatment for various internal ailments is well known. Often, an imaging device such as an X-ray device, Computer Tomography (CT), or Magnetic Resonance Imaging (MR) device is used to generate one or more initial scans or images of the area of interest. These initial scans may be acquired by focusing a beam of radiation into a target volume and collecting the traversing beams in an imager. The beams collected by the imagers are used to generate a display (i.e., one or more images) of the targeted volume that may be used to diagnose or monitor an afflicted area (e.g., a tumor or lesion or a surrounding area).
Typically, once an image has been acquired, critical and/or target structures (e.g., regions or organs) disposed in the target area must be specifically identified so that treatment may be optimally directed. Conventional medical imaging techniques include techniques for automatically identifying (“segmenting”) organs, specific locations (landmarks), and large structures. These techniques are commonly performed according to one or more specific recognition processes, and often include delineating adjacent structures by derived radiodensities and classifying the structures according to their relative positions and derived densities with known values. Recently, these recognition processes have been performed automatically, through computerized recognition processes.
These computerized recognition processes are often structured around achieving an objective, such as recognizing a specified structure or portion of a subject's anatomy. Commonly, these recognition processes are divided into, and performed as, a number of disparate recognition tasks. Each recognition task solves a part of the problem by detecting certain information (outputs), using a data signal directly and/or information found by other tasks (inputs).
A recognition objective may be thus achieved by executing a set of tasks in an appropriate order. In software implementations, inputs and outputs of tasks are described by data objects of many different types. Data objects may describe a signal (e.g., an image) or a transformed part of a signal (e.g., a filtered image region), they may describe a property or feature of a signal or of other objects (e.g., an intensity profile of an image), or they may describe a specific location or structure of the subject's anatomy.
In any such system, the required inputs of each task and its potential outputs are typically known statically, before the software is run. Unfortunately, the set of available inputs on the object storage, the set of desired outputs, the estimated durations of individual recognition tasks, and the set of available processors, however, are generally only known dynamically. As a consequence, determining even modestly efficient schedules manually can be either extremely time consuming, or, in many cases, not possible at all.
Furthermore, issues of complexity increase quickly with the number of recognition tasks. In environments with a varying set of desired outputs, varying task durations, and/or a varying number of processors, it is not currently possible to create a schedule manually, at design time. This problem is further exacerbated by the lack of simple programming environments on standard software development platforms, which typically leads to recognition software being developed either sequentially, redundantly (detecting objects that are not used), or on complex, dedicated (and potentially costly) architectures.